package com.bonc.ioc.util;

import org.apache.commons.lang3.StringUtils;

import java.text.DecimalFormat;

/**
 * @author liuyang
 * @creats 2021-04-22-15:06
 */
public class SizeConversionUtils {
    /**
     * 获取文件的大小(返回到达的最高单位)
     * <p>
     * 比如：1024Byte就不再用Byte
     * <p>
     * 直接返回1KB
     * <p>
     * 返回值精确到小数点后1位
     *
     * @param file 文件大小
     * @return 文件的大小 若文件不存在或者不是文件就返回null
     */
    public static String getSize(String file) {
        if (StringUtils.isBlank(file) | file.equalsIgnoreCase("null")) {
            return "0";
        }
        Double fileSize = Double.valueOf(file);
        double size = (fileSize * (1024.0 * 1024.0));
        StringBuffer bytes = new StringBuffer();
        DecimalFormat format = new DecimalFormat("###.0");
        if (size >= 1024.0 * 1024.0 * 1024.0 * 1024.0) {
            double i = (size / (1024.0 * 1024.0 * 1024.0 * 1024.0));
            bytes.append(format.format(i)).append(" TB");
        } else if (size >= 1024.0 * 1024.0 * 1024.0) {
            double i = (size / (1024.0 * 1024.0 * 1024.0));
            bytes.append(format.format(i)).append(" GB");
        } else if (size >= 1024.0 * 1024.0) {
            double i = (size / (1024.0 * 1024.0));
            bytes.append(format.format(i)).append(" MB");
        } else if (size >= 1024.0) {
            double i = (size / (1024.0));
            bytes.append(format.format(i)).append(" KB");
        } else if (size < 1024.0) {
            if (size <= 0) {
                bytes.append("0 B");
            } else {
                bytes.append((int) size).append(" B");
            }
        }
        return bytes.toString();

    }

    /**
     * 数据转换  加单位  个   万   亿
     *
     * @param number
     * @return
     */
    public static String getNumber(String number) {
        if (StringUtils.isBlank(number) | number.equalsIgnoreCase("null")) {
            return "0";
        }
        DecimalFormat df = new DecimalFormat("#.0");
        Double newNumber = Double.valueOf((number));
        if (number.length() <= 5) {
            return number;
        }
        if (number.length() <= 8) {
            newNumber = newNumber / 10000;
            String formatNumber = df.format(newNumber);
            return formatNumber + "万";
        } else {
            newNumber = newNumber / 100000000;
            String formatNumber = df.format(newNumber);
            return formatNumber + "亿";
        }
    }
}
